/**
 * @author hzx
 * @date 2011年11月03日
 * @class BatchSmsFormPanel
 * @extends Ext.form.FormPanel
 * @description 批量短信表单
 */
BatchSmsFormPanel = Ext.extend(Ext.form.FormPanel, {
	myid : "myid",
	myReadOnly : false, // 自定义属性是否只读
	myDisabled : false, // 自定义属性是否禁用
	upLoadFileWin : null, // 文件上传窗体
	comboStoreTaskType : null,//下拉列表框数据源(任务类型)
	// 构造方法
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		// 下拉列表框数据源(任务类型)
		this.comboStoreTaskType = new Ext.data.JsonStore({
					url : "dataDict.do",
					baseParams : {
						"operator" : "showDataDictByKey",
						"sekey" : "taskType"
					},
					fields : ["datakey", "value","remark"],
					autoLoad : false
				});
		var minDate = new Date();
		minDate.setDate(minDate.getDate()-1);
		var minTime = new Date();
		minTime.setTime(minTime.getTime() + 600000);
		Ext.apply(this, _config);
		// 照片上传窗体	
		this.upLoadFileWin = new UpLoadSmsFileWindow();

		// 拷贝父类的构造方法到当前对象
		BatchSmsFormPanel.superclass.constructor.call(this, {
			id : this.myid,
			border : false, // 不要边框
			fileUpload : true, // 允许上传
			autoScroll : true,
			bodyStyle : "backgroundColor:#DFE8F6;",
			items : [{
				xtype : "panel",
				frame : true,
				border : false,
				bodyStyle : "backgroundColor:#DFE8F6;",
				items : [{
					layout : "column",
					border : false,
					items : [{
								columnWidth : .33,
								labelWidth : 90,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
							 	},
								items : [{
											xtype : "hidden", 
											fieldLabel : "批量任务名称",
											name : "tt.taskname",
//											emptyText : "请输入群发短信任务名称(可选输入)",
											allowBlank : true, // 允许为空
											validator:function(){
												return this.getValue().length <50;
											}
										}
										/*
										, 
										 {
											xtype : "combo", // 下拉列表框
											fieldLabel : "任务类型",
											emptyText : "请选择任务类型",
											mode : "local", // 数据模式为本地
											triggerAction : "all", // 显示所有数据
											displayField : "remark", // 要显示的值
											valueField : "value",
											hiddenName : "tt.tasktype",
											store : this.comboStoreTaskType,
											invalidText : "非法任务类型",
											value : "1",
											hidden : true,
											validator :function(){
											 	return /^[1|2|3|4]$/gi.test(this.getValue());
											}
										}*/
										,{
											xtype : "textarea",
											fieldLabel : "*短信内容",
											name : "tt.content",
											//emptyText : "注意事项:\n\t发送短信凡涉及以下内容的请不要发送，如果造成严重后果的我们将追究发送人的法律责任。谢谢配合！\n\t·危害国家安全，泄露国家机密，颠覆国家政权，破坏国家统一的；\n\t·损害国家荣誉和利益的；\n\t·煽动民族仇恨、民族歧视，破坏民族团结的；\n\t·破坏国家宗教政策，宣扬邪教和封建迷信的；\n\t·散布谣言，扰乱社会秩序，破坏社会稳定的；\n\t·散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的；\n\t·侮辱或者诽谤他人，侵害他人合法权益的；\n\t·含有法律、行政法规、国家政策禁止的其他内容的；\n\t·尝试欺骗、骚扰他人的。\n\n\t请输入您需要发送的短信内容,并且短信内容字数在512字(含)以内",
											emptyText : "短信内容字数请保持在70(含)个字以内!",
											maxLength : 512,
											maxLengthText : "您所填写的短信内容过长",
											height : 150,
											width : 90,
											validateOnBlur:true,
											validator : function(){
												var content_pro = Ext.getCmp("content_pro");
												var str=this.getValue();
//											    var a = str.trim().match(/\r\n/gi);
											    var a = str.trim().split("\n");
											    var len = str.length;
											    if(a != null){
											    	//alert(a.length);
											    	len += a.length-1;
											    }
												var str2 = "短信长度:"+len+",短信条数:"+(len%70 != 0 ? parseInt(len/70+1) : len/70); 
												content_pro.setValue(str2);
												return len <= 70;
											}
										},{
											id : "content_pro",
											fieldLabel : "短信字数",
											allowBlank : true,
											readOnly : true,
											value : "字数:0,短信条数:0",
											disabled : true
										}, {
											xtype : "radiogroup",
											fieldLabel : "*发送类型",
											name : "tt.isScheme",
											columns:2,  //指定分为2列  
											vertical:true,  //指定是否垂直排序  
											allowBlank : false,
											items:[
											    //boxLabel是要显示的值,inputValue是要提交的值  
											   {
											    boxLabel:"立即发送",
											    name:"tt.isScheme",
											    inputValue:"1",
											    checked : true
											    },  
											   {
											    boxLabel:"定时发送",
											    name:"tt.isScheme",
											    inputValue:"2"
											    }
											],
											value : "1",
											getValue : function(){
												var v;
												if(this.rendered){
													this.items.each(function(item){
														if(!item.getValue())
															return true;
														v = item.getRawValue();
														return false;
													});
												}else{
													for(var k in this.items){
														if(this.items[k].checked){
															v = this.items[k].inputValue;
															break;
														}
													}
												}
												return v;
											},
											listeners : {
												'change' : function(group, newValue, oldValue) {
													var sch_date = Ext.getCmp("batch_sch_date");
													var sch_time = Ext.getCmp("batch_sch_time");
													if(this.getValue() == "1"){
														sch_date.disable();
														sch_time.disable();
													}else{
														sch_date.enable() ;
														sch_time.enable() ;
													}
												}
											}
										},{
											id : "batch_sch_date",
											xtype :"datefield",
											fieldLabel : "计划发送时间",
											format : "Y-m-d",
											name : "tt.scheduleDateStr",
											value : new Date(),
											minValue : minDate,
											hideLabel  : false,
											disabled : true
										}, {
											id : "batch_sch_time",
											xtype :"timefield",
											fieldLabel : "计划发送时间",
											format : "H:i:s",
											name : "tt.scheduleTimeStr",
											value : minTime,
											minValue : minTime,
											hideLabel : false,
											disabled : true
										}
										
										]
							},
							{
								columnWidth : .33,
								labelWidth : 90,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
							 	},
								items :[ {
									id : "filepath_display",
									readOnly : true,
									emptyText : "请点击以下按钮进行上传手机号码文件",
									fieldLabel : "路径",
									xtype : "hidden",
									disabled : true,
									hidden : true,
									allowBlank : true // 允许为空
								}, {
									id : "filepath_hidden",
									xtype : "hidden",
									name : "tt.filepath",
									allowBlank : true // 允许为空
								},{
									id : "batch_mobile",
									xtype : "textarea",
									fieldLabel : "*手机号码",
									emptyText:"请按以下格式填写:\n13800138000\n13800138001\n13800138002\n13800138003\n13800138004\n...",
									name : "tt.batchMobile",
									height : 232,
									width : 180,
									allowBlank : false,
									//emptyText : "请输入您需要发送的手机号码，可输入多个，该输入框可为空。输入格式可使用回车符 进行分隔，如:\n13800138000\n13800138000\n13800138000\n如果上传了文件则可以不用填写该项",
									invalidText : "格式有误 ,输入格式可使用回车符进行分隔手机号码分隔，如:\r\n13800138000[回车]13800138000[回车]13800138000[回车]\n手机号码字符必须是半角数字",
									validator : function(){
									//return true;
										if(this.getValue().trim() != "" && /^(1\d{10}\r?\n?)+$/gi.test(this.getValue())){
											var mobile_num = Ext.getCmp("mobile_num");
											var num2 = this.getValue().trim().split("\n");
											
											if(num2 != null){
												mobile_num.setValue(num2.length);
											}else{
												mobile_num.setValue(0);
											}
											if(Ext.get("cur_smscount") != null)
												Ext.get("cur_smscount").value = mobile_num.getValue();
										}
										return this.getValue().trim() != "" && /^(1\d{10}\r?\n?)+$/gi.test(this.getValue()) 
												//&& (this.getValue().match(/\n.+/gi)!=null? this.getValue().match(/\n.+/gi).length<=20000:true)
												;
									}
								}, /*{
									xtype : "button",
									text : "导入手机号码文件",
									handler : this.onMyUpLoadClick,
									scope : this
								}, 
								{
									xtype : "urlfield",
									fieldLabel : "超链接",
									value : "0"
								},*/
								{
									id : "mobile_num",
									fieldLabel : "手机号码个数",
									allowBlank : true,
									readOnly : true,
									disabled : true,
									value : "0"
								},
								/*{
									id : "oneKeyMobile",
									xtype : "button",
									fieldLabel : "去除重复手机号码",
									text : "一键去除重复手机号码",
									handler : this.RemoveSame,
									scope : this,
									width : 80,
									size : 80
								},*/
								{
									id : "batch_repeat_flag",
									xtype : "hidden",
									fieldLabel : "检查重复手机号码",
									name : "tt.repeatFlag",
									columns:2,
									checked : false,
									value : false,
									listeners:{
										'check' : function(){
											if(this.getValue()){
												////
												var tmp1,tmp2,i,j,len,count,list;
												tmp1 = Ext.getCmp("batch_mobile").getValue();
												if(!(tmp1.lastIndexOf('\n')>=0)){
													tmp1 += '\n';
												}
												tmp2 = tmp1.split('\n');
												len=tmp2.length;
												count=0;
												list="";
												for(i=0;i<len;i++){
													if(tmp2[i].length>0){
														for(j=i+1;j<len;j++){
															if(tmp2[i]==tmp2[j]){
																tmp2[j]="";
															}
														}
														count++;
														list+=tmp2[i]+'\n';
													}
												}
												Ext.getCmp("batch_mobile").setValue(list);
												////
											}
										}
									}
								}]
							},
							
							{
								columnWidth : .16,
								labelWidth : 110,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
							 	},
								items :[
								{
									xtype : "label",
									fieldLabel : "剩余短信量",
									text : Ext.get("smscount") == null || Ext.get("smscount")=='' ? "0" : Ext.get("smscount").getValue()
								},{
									xtype : "button",
									text : "导入手机号码文件",
									handler : this.onMyUpLoadClick,
									scope : this
								},{
									id : "oneKeyMobile",
									xtype : "button",
									text : "一键去除重复手机号码",
									handler : this.RemoveSame,
									scope : this,
									hidden : true
								}]
							}
							
					]
				}]
			}]
		});

		/**
		 * 监听upLoadFileWin的onUploadSuccess事件(图片上传成功事件)
		 */
		this.upLoadFileWin.on("onUploadSuccess", this.onUploadSuccess, this);
	},

	/**
	 * upLoadFileWin的onUploadSuccess事件(图片上传成功事件)
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onUploadSuccess : function(_form, _action) {
		// 获取服务器随机生成的图片的名称
//		var _randomPhotoName = _action.result["randomName"];
		var _data = _action.result["data"].replace(/n/gi,"\n").replace(/[^0-9]+/gi," ").replace(/[\n\s|\s]{1}/gi,"\n");
		// 提示信息//成功后不提示客户
//		Ext.Msg.alert("系统消息", _action.result.tipMsg);
		// 获取隐藏表单域的引用
//		var _hidden = this.findByType("textfield")[4];
//		var _hidden2 = this.findByType("textfield")[5];
//		var _hidden = Ext.getCmp("filepath_display");
//		var _hidden2 = Ext.getCmp("filepath_hidden");
		var _batch_mobile = Ext.getCmp("batch_mobile");
		_batch_mobile.setValue(_data);
		
		if(Ext.getCmp("batch_repeat_flag").getValue() && false){
			////
			var tmp1,tmp2,i,j,len,count,list;
			tmp1 = _batch_mobile.getValue();
			tmp2 = tmp1.split('\n');
			len=tmp2.length;
			count=0;
			list="";
			for(i=0;i<len;i++){
				if(tmp2[i].length>0){
					for(j=i+1;j<len;j++){
						if(tmp2[i]==tmp2[j]){
							tmp2[j]="";
						}
					}
					count++;
					list+=tmp2[i]+'\n';
				}
			}
			_batch_mobile.setValue(list);
			////
		}
		// 设置hidden的数值
//		_hidden.setValue(_randomPhotoName);
//		_hidden2.setValue(_randomPhotoName);
//		_batch_mobile.setDisabled(true);
		
		// 隐藏窗体
		this.upLoadFileWin.hide();
	},

	/**
	 * 上传文件按钮单击事件
	 */
	onMyUpLoadClick : function() {
		this.upLoadFileWin.show();
	},
	/**
	 * 删除重复的手机号码
	 */
	RemoveSame : function (){
		var tmp1,tmp2,i,j,len,count,list;
		tmp1 = Ext.getCmp("batch_mobile").getValue();
		if(!(tmp1.lastIndexOf('\n')>=0)){
		}
//		tmp1 = tmp1+'\n';
		tmp2 = tmp1.split('\n');
//		alert(tmp1+tmp2.length);
		len=tmp2.length;
		count=0;
		list="";
		for(i=0;i<len;i++){
			if(tmp2[i].length>0){
				for(j=i+1;j<len;j++){
					if(tmp2[i].trim()==tmp2[j].trim()){
						tmp2[j]="";
					}
				}
				count++;
				list+=tmp2[i]+'\n';
			}
//			alert(list)
		}
		if(count > 1 &&list.lastIndexOf('\n')>=0){
			list = list.substr(0,list.length-1);//去除最后的回车
		}
//		document.form1.txtPhonesCount.value = count;
//		document.form1.txtList.value=list;
		Ext.getCmp("batch_mobile").setValue(list);
	}
});
